// TypeScript 基础类型
//  任意类型的   通用类型 可以使用any 可以为任意类型的赋值操作
//  数字类型 numberw
// 字符串的类型 string 
// 布尔的操作 boolean
//  数组是没有类型操作的 可以直接加上【】 或者 Array<number>
//   元祖 没有操作类型 元组类型用来表示已知元素数量和类型的数组，各元素的类型不必相同，对应位置的类型需要相同。
// 枚举  enum  用于定义数值集合
//  void  这个和java的 返回值很想 其实就是一毛一样的
//  null  表示对象值缺失 完全没有一样的
//  undefined  表示一个值没有定义、 
//  never   never 是其他类型 暴扣null 和undefind的子类型 从不会出现的值
// dd 
//  any  类型
//  任意值 是typescript 针对编程不明确的使用的的这一种数据类型 它常用三个
//  变量的值会动态改变的时候比如用户数饿输入可以市人医累的编译直接跳过
//  例如;
//  let  x:any=1;
//   x='666666';
//   console.log(x); 
//   x=false;
//移除检查的方式 存在但是就是不检查 哎 就是玩
// x.toFixed()
//  就是如同上面的例子的这样的、 可以随意的任何类型的
var x = 4;
x.toFixed(); //正确
console.log(x);
// Null 和 Undefined
// null
// 在 JavaScript 中 null 表示 "什么都没有"。
// null是一个只有一个值的特殊类型。表示一个空对象引用。
// 用 typeof 检测 null 返回是 object。
// undefined
// 在 JavaScript 中, undefined 是一个没有设置值的变量。
// typeof 一个没有值的变量会返回 undefined。
// Null 和 Undefined 是其他任何类型（包括 void）的子类型，可以赋值给其它类型，如数字类型，此时，赋值后的类型会变成 null 或 undefined。而在TypeScript中启用严格的空校验（--strictNullChecks）特性，就可以使得null 和 undefined 只能被赋值给 void 或本身对应的类型，示例代码如下：
var pp;
pp = 1; //正确
console.log(pp);
//   pp=undefined/运行错误
// pp=null 运行错误
// 上面的例子中变量 pppp 只能是数字类型。如果一个类型可能出现 null 或 undefined， 可以用 | 来支持多种类型，示例代码如下：
// 启用 --strictNullChecks
var pppp;
pppp = 1; // 运行正确
pppp = undefined; // 运行正确
pppp = null; // 运行正确
var x;
var y;
// 运行错误，数字类型不能转为 never 类型
x = 123;
// 运行正确，never 类型可以赋值给 never类型
x = (function () { throw new Error('exception'); })();
// 运行正确，never 类型可以赋值给 数字类型
y = (function () { throw new Error('exception'); })();
// 返回值为 never 的函数可以是抛出异常的情况
function error(message) {
    throw new Error(message);
}
// 返回值为 never 的函数可以是无法被执行到的终止点的情况
function loop() {
    while (true) { }
}
